﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using QLTuyenXe.BLL;
using QLTuyenXe.DAO;
using System.Text.RegularExpressions;
using System.Collections;
using System.Data.SqlClient;
using QLTuyenXe.library;

namespace QLTuyenXe.GUI
{
    public partial class frmGiaThueXe : DevComponents.DotNetBar.Office2007RibbonForm
    {
        BGiaThue gt = new BGiaThue();
        XuLyDL xyLy = new XuLyDL();
        ThongBao thongBao = new ThongBao();
        public frmGiaThueXe()
        {
            InitializeComponent();
        }
//========================================================================
        //Hàm hiển thị dữ liệu lên datagriview (Mr.Tuyên K_54HTTT)
        public void HienThi()
        {
            ArrayList giaThue = gt.Select_Form();
            DataTable tbgiathue = new DataTable();
            tbgiathue.Columns.Add("STT", typeof(int));
            tbgiathue.Columns.Add("Mã xe", typeof(String));
            tbgiathue.Columns.Add("Tên xe", typeof(String));
            tbgiathue.Columns.Add("Biển số", typeof(String));
            tbgiathue.Columns.Add("Loại ( chỗ )", typeof(String));
            tbgiathue.Columns.Add("Giá thuê", typeof(String));         
            if (giaThue.Count > 0)               
                foreach( QUANLY_GIA tx in giaThue )
                {
                    DataRow r = tbgiathue.NewRow();
                    r["Mã xe"] = tx.MaXe;
                    r["Tên xe"] = tx.TenXe;
                    r["Biển số"] = tx.BienSo;
                    r["Loại ( chỗ )"] = tx.SoGhe;
                    r["Giá thuê"] = tx.GiaThue;
                    tbgiathue.Rows.Add(r);

                }      
            dgGiaThue.DataSource = tbgiathue;
            int stt = 0;
            for (int i = 0; i < dgGiaThue.Rows.Count -1; i++)
            {
                stt = stt + 1; 
                dgGiaThue.Rows[i].Cells[1].Value = stt;
            }
            txtTong.Text = stt.ToString();
            
        //--------------------------------------------------
            //Thiết lập hiển thị trên giao diện cho lưới
            dgGiaThue.RowHeadersVisible = false;
            dgGiaThue.Columns[1].Width = 70;
            dgGiaThue.Columns[2].Width = 130;
            dgGiaThue.Columns[3].Width = 350;
            dgGiaThue.Columns[4].Width = 160;
            dgGiaThue.Columns[5].Width = 102;
            dgGiaThue.Columns[6].Width = 151;
        //----------------------------------------------------------
        }
        //End hàm load dữ liệ lên datagriview (Mr.Tuyên K_54HTTT)
//============================================================================

//=========================================================================================
        //Hàm load dữ liệu lên form (Mr.Tuyên K_54HTTT)
        private void frmGiaThueXe_Load(object sender, EventArgs e)
        {
            CheckQuyen();
            HienThi();
            load_xe();

        }
    //End hàm load dữ liệu lên form (Mr.Tuyên K_54HTTT)
//========================================================================================

//========================================================================================
        //Hàm xử lý sự kiện khi click lên datagriview (Mr.Tuyên K_54HTTT)
        private void dgGiaThue_Click(object sender, EventArgs e)
        {
            cbMaXe.Text = dgGiaThue.CurrentRow.Cells[2].Value.ToString() + ":" + dgGiaThue.CurrentRow.Cells[3].Value.ToString() ;
            cbBienSo.Text = dgGiaThue.CurrentRow.Cells[4].Value.ToString();            
            cbLoaiXe.Text = dgGiaThue.CurrentRow.Cells[5].Value.ToString();
            txtGiaThue.Text = dgGiaThue.CurrentRow.Cells[6].Value.ToString();
        }
        //End sự kiện click lên datagriview (Mr.Tuyên K_54HTTT)
//======================================================================================

//=======================================================================================================================
       //Hàm insert vào CSDL (Mr.Tuyên K_54HTTT)
        private void btnThem_Click(object sender, EventArgs e)
        {
            if (cbMaXe.Text != "" && txtGiaThue.Text != "")
            {
                string maxe = cbMaXe.SelectedItem.ToString().Split(':')[0].ToString();
                ArrayList gt1 = gt.Select("*", "maxe='" + maxe + "'");
                if (gt1.Count > 0)
                {
                    MessageBoxEx.Show("Giá xe đã tồn tại, bạn không thể thêm giá mới, chỉ có thể sửa giá");
                }
                else
                {
                    if (txtGiaThue.Text != "")
                    {
                        int k = 0;
                        GIATHUE giaThue1 = new GIATHUE();
                        giaThue1.MaGT = gt.getOrder();
                        giaThue1.Maxe = cbMaXe.SelectedItem.ToString().Split(':')[0].ToString();
                        giaThue1.Giathue = txtGiaThue.Text;
                        k = gt.Insert(giaThue1);
                        if (k > 0)
                        {
                            
                            HienThi();
                            txtGiaThue.Clear();
                            thongBao.Them();
                        }
                        else
                        {
                            thongBao.LoiThem();
                        }
                    }
                    else
                    {
                        MessageBoxEx.Show("Bạn chưa nhập giá thuê xe này", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
        //End insert (Mr.Tuyên K_54HTTT)
//=======================================================================================================================================

//=======================================================================================================================================
        //Hàm lưu dữ liệu khi nhấn nút lưu (Mr.Tuyên K_54HTTT)
        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (txtGiaThue.Text != "")
            {
                int kq = 0;
                GIATHUE bgt = new GIATHUE();
                bgt.Giathue = txtGiaThue.Text;
                //string b = dgGiaThue.CurrentRow.Cells[2].Value.ToString();
                //MessageBox.Show(b);
                //kq= gt.Update(bgt,"maxe='"+ dgGiaThue.SelectedRows[0].Cells[2].Value.ToString() +"'");
                kq = gt.Update(bgt, "maxe='" + dgGiaThue.CurrentRow.Cells[2].Value.ToString() + "'");
                if (kq > 0)
                {
                    HienThi();
                    txtGiaThue.Clear();
                    thongBao.Sua();
                }
                else
                {
                    if (MessageBoxEx.Show("Hành động thất bại, bạn có muốn thử lại không ?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes)
                    {
                        txtGiaThue.Focus();
                    }
                }
            }
            else
            {
                MessageBoxEx.Show("Bạn chưa nhập giá", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        //End hàm lưu (Mr.Tuyên K_54HTTT)
//==============================================================================================================

//==============================================================================================================
        //Hàm xóa dư liệu (Mr.Tuyên K_54HTTT)
        private void btnXoa_Click(object sender, EventArgs e)
        {
                if (MessageBoxEx.Show("Bạn muốn xóa không?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    string key = "";
                    int count = 0;
                    int rcount_ = dgGiaThue.Rows.Count - 1; // Tùy theo bạn đặt AllowUserToAddRows = true hoặc false
                    if (rcount_ <= 0) { return; }
                    try
                    {
                        for (int i = rcount_; i >= 0; i--)
                        {
                            if (dgGiaThue.Rows[i].Cells[0].Value != null) //dataGridView1.Rows[i].Cells[0].Value != null
                            {
                                key = dgGiaThue.Rows[i].Cells[2].Value.ToString(); //lấy key để xóa trong database
                                count += gt.Delete("maxe='" + key + "'");
                            }
                        }
                        if (count > 0)
                        {
                            HienThi();
                            thongBao.Kq_Xoa(count);
                        }
                        else
                        {
                            thongBao.LoiXoa();
                        }
                    }
                    catch
                    {
                        MessageBoxEx.Show("Bạn chưa chọn dữ liệu cần xóa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }        
        }
        //End kết thúc hàm xóa (Mr.Tuyên K_54HTTT)
//========================================================================================================

//========================================================================================================
        //Hàm load dữ liệu vào Combobox (Mr.Tuyên K_54HTTT)
        public void load_xe()
        {
            DataTable xe = gt.Select1();
            for (int i = 0; i < xe.Rows.Count; i++)
            {
                cbMaXe.Items.Add(xe.Rows[i][0].ToString() + ":" + xe.Rows[i][1].ToString());
            }
        }
        //End hàm load combobox (Mr.Tuyên K54HTTT)
//=======================================================================================

//=======================================================================================
        //Load len combobox loai va combobox bien so (Mr.Tuyên K_54HTTT)
        public void load_SoGhe_Loai()
        {
            if (cbMaXe.Text != "")
            {
                string maxe = cbMaXe.SelectedItem.ToString().Split(':')[0].ToString();
                string tenxe = cbMaXe.SelectedItem.ToString().Split(':')[1].ToString();
                DataTable tx = gt.Select1(maxe, tenxe);
                cbLoaiXe.DataSource = tx;
                cbLoaiXe.DisplayMember = "soghe";
                cbLoaiXe.ValueMember = "soghe";
                cbBienSo.DataSource = tx;
                cbBienSo.DisplayMember = "bienso";
                cbBienSo.ValueMember = "bienso";
            }
        }
        //End  (Mr.Tuyên K_54HTTT)
//==========================================================================================

        private void cbTenXe_SelectedIndexChanged(object sender, EventArgs e)
        {
        }

        private void cbTenXe_Click(object sender, EventArgs e)
        {
            
        }

        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            HienThi();
            cbMaXe.Items.Clear();
            load_xe();
        }

//===================================================================================
        //Hàm chặn nhập ký tự vào ô giá thuê (Mr.Tuyên K_54HTTT)
        private void txtGiaThue_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
                MessageBoxEx.Show("Xin lỗi bạn giá thuê xe chỉ được nhập số");
            }
        }
        // End (Mr.Tuyên K_54HTTT)
//==========================================================================================

//===========================================================================================
        //Hàm tìm kiếm ( Mr.Tuyên K_54HTTT)
        private void btnTimKiem_Click(object sender, EventArgs e)
        {
            if (rbMaXe.Checked == true)
            {
                TK("QUAN_LY_XE.maxe='" + txtTimKiem.Text + "'");
            }
            else
            {
                if (rbTenXe.Checked == true)
                {
                    TK("tenxe='" + txtTimKiem.Text + "'");
                }
                else
                {
                    if (rbLoaiXe.Checked == true)
                    {
                        if (xyLy.IsNumber(txtTimKiem.Text)==true)
                        {
                            TK("soghe='" + txtTimKiem.Text + "'");
                        }
                        else
                        {
                            MessageBoxEx.Show("Loại xe phải là dạng số");
                        }
                    }
                    else
                    {
                        thongBao.TimKiem();
                    }
                }
            }
        }
        // End tìm kiếm (Mr.Tuyên K_54HTTT)
//=================================================================================================

        private void cbMaXe_TextChanged(object sender, EventArgs e)
        {
            load_SoGhe_Loai();
        }

        private void cbLoaiXe_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void btnChonTatCa_Click(object sender, EventArgs e)
        {
            //foreach (DataGridViewRow r in dgGiaThue.Rows)
            //{
                //r.Cells[0].Value = true;
            //}
            for(int i=0 ; i <dgGiaThue.Rows.Count-1;i++)
            {
                dgGiaThue.Rows[i].Cells[0].Value = true;
            }
        }

        private void btnBoChonAll_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow r in dgGiaThue.Rows)
            {
                r.Cells[0].Value = false;
            }
        }

        private void panelEx2_Click(object sender, EventArgs e)
        {

        }
       //Check quyền
        public static string ten = string.Empty;
        public void CheckQuyen()
        {
            BUser user = new BUser();
            DataTable them = user.Select_Quyen("name='"+ ten +"'", "danhmuc_them='X'");
            DataTable sua = user.Select_Quyen("name='"+ ten +"'", "danhmuc_sua='X'");
            DataTable xoa = user.Select_Quyen("name='"+ ten +"'", "danhmuc_xoa='X'");
            if (them.Rows.Count > 0)
            {
                btnThem.Enabled = true;
            }
            else
            {
                btnThem.Enabled = false;
            }

            if (sua.Rows.Count > 0)
            {
                btnLuu.Enabled = true;
            }
            else
            {
                btnLuu.Enabled = false;
            }
            if (xoa.Rows.Count > 0)
            {
                btnXoa.Enabled = true;
            }
            else
            {
                btnXoa.Enabled = false;
            }
        }
        //end

        private void TK(string dk)
        {
            if (txtTimKiem.Text !="")
            {
                ArrayList giaThue = gt.TimKiem(dk);
                DataTable tbgiathue = new DataTable();
                tbgiathue.Columns.Add("STT", typeof(int));
                tbgiathue.Columns.Add("Mã xe", typeof(String));
                tbgiathue.Columns.Add("Tên xe", typeof(String));
                tbgiathue.Columns.Add("Biển số", typeof(String));
                tbgiathue.Columns.Add("Loại ( chỗ )", typeof(String));
                tbgiathue.Columns.Add("Giá thuê", typeof(String));
                if (giaThue.Count > 0)
                {
                    foreach (QUANLY_GIA tx in giaThue)
                    {
                        DataRow r = tbgiathue.NewRow();
                        r["Mã xe"] = tx.MaXe;
                        r["Tên xe"] = tx.TenXe;
                        r["Biển số"] = tx.BienSo;
                        r["Loại ( chỗ )"] = tx.SoGhe;
                        r["Giá thuê"] = tx.GiaThue;
                        tbgiathue.Rows.Add(r);
                    }
                    dgGiaThue.DataSource = tbgiathue;
                    dgGiaThue.DataSource = tbgiathue;
                    int stt = 0;
                    for (int i = 0; i < dgGiaThue.Rows.Count - 1; i++)
                    {
                        stt = stt + 1;
                        dgGiaThue.Rows[i].Cells[1].Value = stt;
                    }
                    txtTong.Text = stt.ToString();
                    //Thiết lập hiển thị trên giao diện cho lưới
                    dgGiaThue.RowHeadersVisible = false;
                    dgGiaThue.Columns[1].Width = 70;
                    dgGiaThue.Columns[2].Width = 130;
                    dgGiaThue.Columns[3].Width = 350;
                    dgGiaThue.Columns[4].Width = 160;
                    dgGiaThue.Columns[5].Width = 102;
                    dgGiaThue.Columns[6].Width = 151;
                }
                else
                {
                    thongBao.DKTimKiem();
                }
            }
        }

    }
}
